home *** CD-ROM | disk | FTP | other *** search
Text File | 1987-01-06 | 13.9 KB | 727 lines | [TEXT/EDIT] |
- // HFSdefs.h
- // Mac File System I/O interface.
- // © Copyright 1984, 1985, 1986 Consulair Corp, All Rights Reserved.
- // Portions © Copyright Apple Computer, Inc: 1982, 1983, 1984
- // Stanford University, SUMEX project: 1984
- // Updated Jan 5, 1986 JSF/WSD
- // Requires Macdefs.h
-
- #ifndef HFSdefsLoaded
-
- #ifndef MacdefsLoaded
- #include "macdefs.h"
- #endif
-
- #define HFSdefsLoaded
- #ifdef OSmiscLoaded
- #Options E
- ####You cannot include OSMisc.h and HFSDefs.h in the same file####
- #endif
-
- #ifdef OSioLoaded
- #Options E
- ####You cannot include OSIO.h and HFSDefs.h in the same file####
- #endif
-
- // Added by Consulair
-
- #define VCBQHdr (*(VCBPtr *)0x358)
- #define FSFCBLen (*(short *)0x3F6)
- #define HFS_System (FSFCBLen >= 0)
- #define HFS_Volume(pb) (pb.ioVSigWord == hfsSigWord)
- typedef short RefNum;
-
- // error codes
-
- #define noErr 0
- #define dirFulErr (-33) /* Directory full */
- #define dskFulErr (-34) /* Allocation blocks are full (disk full) */
- #define nsvErr (-35) /* no such volume */
- #define ioErr (-36) /* I/O error */
- #define bdNamErr (-37) /* Bad file name or volume name (zero-length?) */
- #define fnOpnErr (-38) /* File not open */
- #define eofErr (-39) /* End of file */
- #define posErr (-40) /* position to before start of file (r/w) */
- #define memFulErr (-41) /* memory full, or file won't fit (load) */
- #define tmfoErr (-42) /* too many files open */
- #define fnfErr (-43) /* File not found */
- #define wPrErr (-44) /* diskette is write protected */
- #define fLckdErr (-45) /* file is locked */
- #define vLckdErr (-46) /* volume is locked */
- #define fBsyErr (-47) /* one or more files are open */
- #define dupFNErr (-48) /* duplicate filename (rename) */
- #define opWrErr (-49) /* file already open for write */
- #define paramErr (-50) /* Parameters don't specify an existing volume */
- #define rfNumErr (-51) /* refnum specifies nonexistent access path */
- #define gfpErr (-52) /* Error during GetFPos */
- #define volOffLinErr (-53) /* volume not on line error (was Ejected) */
- #define permErr (-54) /* trying to open locked file for write */
- #define volOnLinErr (-55) /* drive volume already on-line at MountVol */
- #define nsDrvErr (-56) /* no such drive-tried to mount a bad drive num */
- #define noMacDskErr (-57) /* not a mac diskette (sig bytes are wrong) */
- #define extFSErr (-58) /* external fs - fs identifier is non-zero or path ref is > 1024 */
- #define fsRnErr (-59) /* rename problem */
- #define badMDBErr (-60) /* bad master directory block,must reinitialize */
- #define wrPermErr (-61) /* permission doesn't allow writing */
-
- #define memFullErr (-108) /* not enough room in heap zone */
-
- #define dirNFErr (-120) /* Directory not found */
- #define twwdoErr (-121) /* Too many working directories open */
- #define badMovErr (-122) /* Attempted to move into offspring */
- #define wrgVolTypErr (-123) /* Attempt to do HFS operation on nonHFS volume */
- #define fsDSIntErr (-127) /* Internal file system error */
-
-
- #define firstDskErr -84
- #define lastDskErr -64
-
- #define asnycTrpBit 0x0400
-
- /* IOFlAttrib masks */
-
- #define ioFileLocked 0x0001
- #define ioDataForkOpen 0x0004
- #define ioResForkOpen 0x0008
- #define ioIsDirectory 0x0010
- #define ioEitherForkOpen 0x0080
-
- /* Flags in file information used by the finder */
-
- #define fHasBundle 0x2000
- #define fInvisible 0x4000
-
- #define fTrash -3
- #define fDesktop -2
- #define fDisk 0
-
- /* Positioning modes */
-
- #define fsAtMark 0
- #define fsFromStart 1
- #define fsFromLEOF 2
- #define fsFromMark 3
- #define rdVerify 64
-
- /* Values for requesting read/write permission */
-
- #define fsCurPerm 0
- #define fsRdPerm 1
- #define fsWrPerm 2
- #define fsRdWrPerm 3
- #define fsRdWrShPerm 4
-
- #define mfsSigWord 0xd2d7
- #define hfsSigWord 0x4244
-
- #define FCBSPtr *((Ptr *) 0x34e)
- #define FCBLen *((short *) 0x3f6)
-
- #define rootDirID 2
-
- #define String(size) struct { unsigned char length; char text[size]; }
-
- typedef Str255 *StringPtr;
-
- typedef union
- {
- char filler[22];
- struct
- {
- long param1;
- long param2;
- long param3;
- } printer;
- struct
- {
- Ptr buffPtr;
- } disks;
- } csParamType, *csParamTypePtr;
-
-
- typedef struct QElem
- {
- struct QElem *qLink;
- short qType;
- short qData[0];
- } QElem, *QElemPtr;
-
- typedef struct
- {
- short qFlags;
- QElemPtr qHead;
- QElemPtr qTail;
- } QHdr, *QHdrPtr;
-
- typedef struct
- {
- OSType fdType;
- OSType fdCreator;
- short fdFlags;
- Point fdLocation;
- short fdFldr;
- } FInfo, *FInfoPtr;
-
-
- typedef struct /* ParamBlockRec */
- {
- QElemPtr qLink;
- short qType;
- short ioTrap;
- Ptr ioCmdAddr;
- ProcPtr ioCompletion;
- OSErr ioResult;
- StringPtr ioNamePtr;
- short ioVRefNum;
-
- union
- {
- struct /* ioParam */
- {
- short ioRefNum;
- char ioVersNum;
- char ioPermssn;
- Ptr ioMisc;
- Ptr ioBuffer;
- long ioReqCount;
- long ioActCount;
- short ioPosMode;
- long ioPosOffset;
- } ioParam;
- struct /* fileParam */
- {
- short ioFRefNum;
- char ioFVersNum;
- char filler1;
- short ioFDirIndex;
- char ioFlAttrib;
- char ioFlVersNum;
- FInfo ioFlFndrInfo;
- long ioFlNum;
- short ioFlStBlk;
- long ioFlLgLen;
- long ioFlPyLen;
- short ioFlRStBlk;
- long ioFlRLgLen;
- long ioFlRPyLen;
- long ioFlCrDat;
- long ioFlMdDat;
- } fileParam;
- struct /* volumeParam */
- {
- long filler2;
- short ioVolIndex;
- long ioVCrDate;
- long ioVLsBkUp;
- short ioVAtrb;
- short ioVNmFls;
- short ioVDirSt;
- short ioVBlLn;
- short ioVNmAlBlks;
- long ioVAlBlkSiz;
- long ioVClpSiz;
- short ioAlBlSt;
- long ioVNxtFNum;
- short ioVFrBlk;
- } volumeParam;
- struct /* cntrlParam */
- {
- short ioCRefNum;
- short csCode;
- csParamType csParam;
- } cntrlParam;
- } ParamUnion;
- } ParamBlockRec, *ParamBlkPtr;
-
- /* separate structures for above if union construction is not desired */
-
- typedef struct /* ioParam */
- {
- QElemPtr qLink;
- short qType;
- short ioTrap;
- Ptr ioCmdAddr;
- ProcPtr ioCompletion;
- OSErr ioResult;
- StringPtr ioNamePtr;
- short ioVRefNum;
- short ioRefNum;
- char ioVersNum;
- char ioPermssn;
- Ptr ioMisc;
- Ptr ioBuffer;
- long ioReqCount;
- long ioActCount;
- short ioPosMode;
- long ioPosOffset;
- } ioParam, *ioParamPtr;
-
- typedef struct /* fileParam */
- {
- QElemPtr qLink;
- short qType;
- short ioTrap;
- Ptr ioCmdAddr;
- ProcPtr ioCompletion;
- OSErr ioResult;
- StringPtr ioNamePtr;
- short ioVRefNum;
- short ioFRefNum;
- char ioFVersNum;
- char filler1;
- short ioFDirIndex;
- char ioFlAttrib;
- char ioFlVersNum;
- FInfo ioFlFndrInfo;
- long ioFlNum;
- short ioFlStBlk;
- long ioFlLgLen;
- long ioFlPyLen;
- short ioFlRStBlk;
- long ioFlRLgLen;
- long ioFlRPyLen;
- long ioFlCrDat;
- long ioFlMdDat;
- } fileParam, *fileParamPtr;
-
- typedef struct /* volumeParam */
- {
- QElemPtr qLink;
- short qType;
- short ioTrap;
- Ptr ioCmdAddr;
- ProcPtr ioCompletion;
- OSErr ioResult;
- StringPtr ioNamePtr;
- short ioVRefNum;
- long filler2;
- short ioVolIndex;
- long ioVCrDate;
- long ioVLsBkUp;
- short ioVAtrb;
- short ioVNmFls;
- short ioVDirSt;
- short ioVBlLn;
- short ioVNmAlBlks;
- long ioVAlBlkSiz;
- long ioVClpSiz;
- short ioAlBlSt;
- long ioVNxtFNum;
- short ioVFrBlk;
- } volumeParam, *volumeParamPtr;
-
-
- typedef struct /* cntrlParam */
- {
- QElemPtr qLink;
- short qType;
- short ioTrap;
- Ptr ioCmdAddr;
- ProcPtr ioCompletion;
- OSErr ioResult;
- StringPtr ioNamePtr;
- short ioVRefNum;
- short ioCRefNum;
- short csCode;
- csParamType csParam;
- } cntrlParam, *cntrlParamPtr;
-
-
- typedef struct /* HParamBlockRec */
- {
- QElemPtr qLink;
- short qType;
- short ioTrap;
- Ptr ioCmdAddr;
- ProcPtr ioCompletion;
- OSErr ioResult;
- StringPtr ioNamePtr;
- short ioVRefNum;
-
- union
- {
- struct /* ioParam */
- {
- short ioRefNum;
- char ioVersNum;
- char ioPermssn;
- Ptr ioMisc;
- Ptr ioBuffer;
- long ioReqCount;
- long ioActCount;
- short ioPosMode;
- long ioPosOffset;
- } ioParam;
- struct /* fileParam */
- {
- short ioFRefNum;
- char ioFVersNum;
- char filler1;
- short ioFDirIndex;
- char ioFlAttrib;
- char ioFLVersNum;
- FInfo ioFlFndrInfo;
- long ioDirID;
- short ioFlStBlk;
- long ioFlLgLen;
- long ioFlPyLen;
- short ioFlRStBlk;
- long ioFlRLgLen;
- long ioFlRPyLen;
- long ioFlCrDat;
- long ioFlMdDat;
- } fileParam;
- struct /* volumeParam */
- {
- long filler4;
- short ioVolIndex;
- long ioVCrDate;
- long ioVLsMod;
- short ioVAtrb;
- short ioVNmFls;
- short ioVBitMap;
- short ioVAllocPtr;
- short ioVNmAlBlks;
- long ioVAlBlkSiz;
- long ioVClpSiz;
- short ioAlBlSt;
- long ioVNxtCNID;
- short ioVFrBlk;
- short ioVSigWord;
- short ioVDrvInfo;
- short ioVDRefNum;
- short ioVFSID;
- long ioVBkUp;
- short ioVSeqNum;
- long ioVWrCnt;
- long ioVFilCnt;
- long ioVDirCnt;
- long ioVFndrInfo[8];
- } volumeParam;
- } HParamUnion;
- } HParamBlockRec, *HParmBlkPtr;
-
- /* separate structures for above if union construction is not desired */
-
- typedef struct /* ioParam */
- {
- QElemPtr qLink;
- short qType;
- short ioTrap;
- Ptr ioCmdAddr;
- ProcPtr ioCompletion;
- OSErr ioResult;
- StringPtr ioNamePtr;
- short ioVRefNum;
- short ioRefNum;
- char ioVersNum;
- char ioPermssn;
- Ptr ioMisc;
- Ptr ioBuffer;
- long ioReqCount;
- long ioActCount;
- short ioPosMode;
- long ioPosOffset;
- } HioParam, *HioParamPtr;
-
-
- typedef struct /* fileParam */
- {
- QElemPtr qLink;
- short qType;
- short ioTrap;
- Ptr ioCmdAddr;
- ProcPtr ioCompletion;
- OSErr ioResult;
- StringPtr ioNamePtr;
- short ioVRefNum;
- short ioFRefNum;
- short filler2;
- short ioFDirIndex;
- char ioFlAttrib;
- char filler3;
- FInfo ioFlFndrInfo;
- long ioDirID;
- short ioFlStBlk;
- long ioFlLgLen;
- long ioFlPyLen;
- short ioFlRStBlk;
- long ioFlRLgLen;
- long ioFlRPyLen;
- long ioFlCrDat;
- long ioFlMdDat;
- } HfileParam, *HfileParamPtr;
-
-
- typedef struct /* volumeParam */
- {
- QElemPtr qLink;
- short qType;
- short ioTrap;
- Ptr ioCmdAddr;
- ProcPtr ioCompletion;
- OSErr ioResult;
- StringPtr ioNamePtr;
- short ioVRefNum;
- long filler4;
- short ioVolIndex;
- long ioVCrDate;
- long ioVLsMod;
- short ioVAtrb;
- short ioVNmFls;
- short ioVBitMap;
- short ioVAllocPtr;
- short ioVNmAlBlks;
- long ioVAlBlkSiz;
- long ioVClpSiz;
- short ioAlBlSt;
- long ioVNxtFNum;
- short ioVFrBlk;
- short ioVSigWord;
- short ioVDrvInfo;
- short ioVDRefNum;
- short ioVFSID;
- long ioVBkUp;
- short ioVSeqNum;
- long ioVWrCnt;
- long ioVFilCnt;
- long ioVDirCnt;
- long ioVFndrInfo[8];
- } HvolumeParam, *HvolumeParamPtr;
-
-
- typedef struct /* CInfoPBRec */
- {
- QElemPtr qLink;
- short qType;
- short ioTrap;
- Ptr ioCmdAddr;
- ProcPtr ioCompletion;
- OSErr ioResult;
- StringPtr ioNamePtr;
- short ioVRefNum;
- short ioFRefNum;
- short filler1;
- short ioFDirIndex;
- char ioFlAttrib;
- char filler2;
- union
- {
- struct /* hFileInfo */
- {
- FInfo ioFlFndrInfo;
- long ioFlNum;
- short ioFlStBlk;
- long ioFlLgLen;
- long ioFlPyLen;
- short ioFlRStBlk;
- long ioFlRLgLen;
- long ioFlRPyLen;
- long ioFlCrDat;
- long ioFlMdDat;
- long ioFlBkDat;
- FInfo ioFlXFndrInfo;
- long ioFlParID;
- long ioFlClpSiz;
- } hFileInfo;
- struct /* dirInfo */
- {
- short ioDrUsrWds[8];
- long ioDrDirID;
- short ioDrNmFls;
- short filler3[9];
- long ioDrCrDat;
- long ioDrMdDat;
- long ioDrBkDat;
- short ioDrFndrInfo[8];
- long ioDrParID;
- } dirInfo;
- } CInfoUnion;
- } CInfoPBRec, *CInfoPBPtr;
-
- /* separate structures for above if union construction is not desired */
-
- typedef struct
- {
- QElemPtr qLink;
- short qType;
- short ioTrap;
- Ptr ioCmdAddr;
- ProcPtr ioCompletion;
- OSErr ioResult;
- StringPtr ioNamePtr;
- short ioVRefNum;
- short ioFRefNum;
- short filler1;
- short ioFDirIndex;
- char ioFlAttrib;
- char filler2;
- FInfo ioFlFndrInfo;
- long ioFlNum;
- short ioFlStBlk;
- long ioFlLgLen;
- long ioFlPyLen;
- short ioFlRStBlk;
- long ioFlRLgLen;
- long ioFlRPyLen;
- long ioFlCrDat;
- long ioFlMdDat;
- long ioFlBkDat;
- FInfo ioFlXFndrInfo;
- long ioFlParID;
- long ioFlClpSiz;
- } hFileInfoPBRec, *hFileInfoPBPtr;
-
-
- typedef struct
- {
- QElemPtr qLink;
- short qType;
- short ioTrap;
- Ptr ioCmdAddr;
- ProcPtr ioCompletion;
- OSErr ioResult;
- StringPtr ioNamePtr;
- short ioVRefNum;
- short ioFRefNum;
- short filler1;
- short ioFDirIndex;
- char ioFlAttrib;
- char filler2;
- short ioDrUsrWds[8];
- long ioDrDirID;
- short ioDrNmFls;
- short filler3[9];
- long ioDrCrDat;
- long ioDrMdDat;
- long ioDrBkDat;
- short ioDrFndrInfo[8];
- long ioDrParID;
- long filler4;
- } DirInfoPBRec, *DirInfoPBPtr;
-
-
-
- typedef struct /* CMovePBRec */
- {
- QElemPtr qLink;
- short qType;
- short ioTrap;
- Ptr ioCmdAddr;
- ProcPtr ioCompletion;
- OSErr ioResult;
- StringPtr ioNamePtr;
- short ioVRefNum;
- long filler1;
- StringPtr ioNewName;
- long filler2;
- long ioNewDirID;
- long filler3[2];
- long ioDirID;
- } CMovePBRec, *CMovePBPtr;
-
-
- typedef struct /* WDPBRec */
- {
- QElemPtr qLink;
- short qType;
- short ioTrap;
- Ptr ioCmdAddr;
- ProcPtr ioCompletion;
- OSErr ioResult;
- StringPtr ioNamePtr;
- short ioVRefNum;
- short filler1;
- short ioWDIndex;
- long ioWDProcID;
- short ioWDVRefNum;
- short filler2[7];
- long ioWDDirID;
- } WDPBRec, *WDPBPtr;
-
-
- typedef struct
- {
- QElemPtr qLink;
- short qType;
- short ioTrap;
- Ptr ioCmdAddr;
- ProcPtr ioCompletion;
- OSErr ioResult;
- StringPtr ioNamePtr;
- short ioVRefNum;
- short ioRefNum;
- short filler;
- long ioFCBIndx;
- long ioFCBFlNm;
- short ioFCBFlags;
- short ioFCBStBlk;
- long ioFCBEOF;
- long ioFCBPLen;
- long ioFCBCrPs;
- short ioFCBVRefNum;
- long ioFCBClpSiz;
- long ioFCBParID;
- } FCBPBRec, *FCBPBPtr;
-
- typedef struct /* VCB */
- {
- QElemPtr qLink;
- short qType;
- short vcbFlags;
- short vcbSigWord;
- long vcbCrDate;
- long vcbLsBkUp;
- short vcbAtrb;
- short vcbNmFls;
- short vcbVBMSt;
- short vcbAllocPtr;
- short vcbNmAlBlks;
- long vcbAlBlkSiz;
- long vcbClpSiz;
- short vcbAlBlSt;
- long vcbNxtCNID;
- short vcbFreeBlks;
- String(27) vcbVN;
- short vcbDrvNum;
- short vcbDRefNum;
- short vcbFSID;
- short vcbVRefNum;
- Ptr vcbMAdr;
- Ptr vcbBufAdr;
- short vcbMLen;
- short vcbDirIndex;
- short vcbDirBlk;
- long vcbVolBkUp;
- short vcbVSeqNum;
- long vcbWrCnt;
- long vcbXTClpSiz;
- long vcbCtClpSiz;
- short vcbNmRtDirs;
- long vcbFilCnt;
- long vcbDirCnt;
- long vcbFndrInfo[8];
- short vcbVCSize;
- short vcbVBMCSiz;
- short vcbCtlCSiz;
- short vcbXTAlBks;
- short vcbCTAlBks;
- short vcbXTRef;
- short vcbCTRef;
- long vcbCtlBuf;
- long vcbDirIDM;
- short vcbOffsM;
- } VCB, *VCBPtr;
-
- typedef struct /* DrvQEl */
- {
- QElemPtr qLink;
- short qType;
- short dQDrive;
- short dQRefNum;
- short dQFSID;
- short dQDrvSize;
- } DrvQEl, *DrvQElPtr;
-
- #endif
-